﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using AccesoBD;
using CapaLogica.CL.Usuario;
using CapaLogica.CL.UtilidadesGenerales;

namespace CapaLogica.CL.Grupo
{
    public class CL_Grupo
    {
        private int _id;
        private int _numGrupo;
        private List<Cl_Docente> _profesores;
        private int _idCurso;
        private Cl_Curso _curso;


        public int Id
        {
            get { return _id; }
            set { _id = value; }
        }

        public int NumGrupo
        {
            get { return _numGrupo; }
            set { _numGrupo = value; }
        }


        public List<Cl_Docente> Profesores
        {
            get 
            {
                try
                {
                    if (_profesores == null)
                    {
                        _profesores = new UsuarioPersistente().buscarDocentesDeUnGrupo(Id);
                    }
                    return _profesores;
                }
                catch (Exception ex )
                {
                    
                    throw ex;
                }
                 
            }
            set { _profesores = value; }
        }


        public int IdCurso
        {
            get { return _idCurso; }
            set { _idCurso = value; }
        }

        public Cl_Curso Curso
        {
            get {
                try 
	            {
                    if (_curso == null)
                    {
                        _curso = (new CursoPersistente().buscarCursoPorId(IdCurso + ""))[0];
                    }
	            }
	            catch (Exception ex )
	            {
		
		            throw ex;
	            }
            
   

                    return _curso; 
            }
            set { _curso = value; }
        }

        private List<Cl_Estudiante> _estudiantes;

        public List<Cl_Estudiante> Estudiantes
        {
            get
            {
                try
                {
                    if (_estudiantes == null)
                    {
                        _estudiantes = new UsuarioPersistente().listarEstudiantesGrupo(Id);
                    }
                    return _estudiantes;
                }
                catch (Exception ex )
                {
                    
                    throw ex;
                } 
                 
            }
            set { _estudiantes = value; }
        }


        /// <summary>
        /// Constructor de la clase grupo.
        /// </summary>
        /// <param name="pIdCurso">Codigo del Curso, tipo int</param>
        /// <param name="pNumGrupo">Numero de grupo, tipo int</param>
        /// <remarks></remarks>
        internal CL_Grupo(int pIdCurso, int pNumGrupo)
        {
            IdCurso = pIdCurso;
            NumGrupo = pNumGrupo;
        }

        /// <summary>
        /// Constructor de la clase grupo.
        /// </summary>
        /// <param name="pId">Codigo del Grupo, tipo int</param>
        /// <param name="pIdCurso">Codigo del Curso, tipo int</param>
        /// <param name="pNumGrupo">Numero de grupo, tipo int</param>
        /// <remarks></remarks>
        internal CL_Grupo(int pId, int pIdCurso, int pNumGrupo)
        {
            Id = pId;
            IdCurso = pIdCurso;
            NumGrupo = pNumGrupo;
        }

    }
}
